var orderModel = require("../../models/order.model");
var moment = require("moment");

 module.exports = {
     isConflict: function (req, res, next, body, cb){
        //检测乘客没有冲突的行程，这个时间段（大于出发时间，少于到达时间的），该乘客的订单是否有。然后去程和返程都要检测，计算出时间区间。里面有些乘客中的某个
        let initalValues = body.initalValues,
            passengerIDs = [],
            filter = {},
            goStart = moment(initalValues.goTrip.start.time).format("YYYY-MM-DD HH:mm"),
            goEnd = moment(initalValues.goTrip.end.time).format("YYYY-MM-DD HH:mm"),
            toStart = null,
            toEnd = null;
        for(let i = 0; i < body.values.passenger.length; i++){
            passengerIDs.push(body.values.passenger[i].IDnumber);
        }
        if(initalValues.toType){//有返程的时候
            toStart = moment(initalValues.toTrip.start.time).format("YYYY-MM-DD HH:mm");
            toEnd = moment(initalValues.toTrip.end.time).format("YYYY-MM-DD HH:mm");
            //gt大于，lt小于
            filter = {
                $or:[{
                    "start.time":{ $gte: goStart, $lte: goEnd },
                    "start.time": { $gte: toStart, $lte: toEnd }
                }],
            }
        }else{
            filter={
                "start.time": { $gte: goStart, $lte: goEnd  }
            }
        }
        filter.deleted = false;
        orderModel.find(filter).exec((err, data)=>{
            if(err){
                console.error(err);
                res.json({
                    success:false,
                    description:"乘客行程检测出错"
                })
            }else{
                //在data里面有些乘客中的某个
                let flag = 1;//1表示没有冲突，0表示有冲突
                if(data.length){
                    for(let i = 0; i < data.length; i++){
                        for(let j = 0; j < data[i].passenger.length; j++){
                            if(passengerIDs.indexOf(data[i].passenger[j].IDnumber) !== -1){//有乘客的行程冲突。
                                flag = 0; break;
                            }
                        }
                    }
                }
                cb(req, res, next, flag);
            }
        })
    }
}